package com.testing.class1;

/**
 * @Classname XsTest
 * @Description 类型说明
 * @Date 2021/4/9 22:09
 * @Created by 特斯汀Roy
 */
public class XsTest {
    public static void main(String[] args) {

        //默认小数是double类型，所以如果要用float ，加f
        float faa=1.66334645444f;
        //float可以通过强制转换的形式来表示，是因为double比float字节更多，需要的是进行截断，所以可以强转。
        float fa=(float) 1.663;
        //double能够表示到小数点后更多位数
        double da=1.66334645444888878;

        System.out.println("float超长"+faa);
        System.out.println("double结果"+da);


        double dr= faa+da;
        //计算结果取最高精度，所以double+float结果是double。
        float fr=(float)(faa+da);

        System.out.println("dr"+dr);
        System.out.println("fr"+fr);

        int ia=3;
        int ib=7;
        //最高精度是int。 计算结果是int
        //除法直接得到除结果，不含小数。
        int iir= ib/ia;
        System.out.println("iir结果"+iir);
        //将int转为更高精度的double，自动转换了,先得到结果是2，然后转为double 2.0
        double dir= ib/ia;
        System.out.println("自动转换的dir结果"+dir);

        //如果要得到小数结果？
        //先定义再除

        //将算式中的int先转为小数 float或者double
        //由于java中double和float的表示方式用到底数和指数来表示，2的负某次方无法完整表述的时候，
        // 计算结果就会出现偏差，是正常的现象，由java本身机制决定的
        //不要用java来计算高精度的科学运算，如果要算用math等库来算。
        //右边得到结果是float，然后自动转为double。
        double ddr=ib/(float)ia;
        System.out.println("ddr结果"+ddr);
        //ib/(float)ia  最高精度是 float 所以结果是float
        float fdr=ib/(float)ia;
        System.out.printf("fdr结果%f",fdr);

        //强制转换
        int idr =(int) (ib/(double)ia);
        System.out.printf("小数转整数%d",idr);





    }

}
